package fr.iut2.tc1.server;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;

import fr.iut2.tc1.client.MyService;
import fr.iut2.tc1.client.TrollResultSerialized;
import fr.iut2.tc1.client.ImgResultSerialized;

public class MyServiceImpl extends RemoteServiceServlet implements MyService {

	// Méthode pour récupérer les sauvegardes
	public ArrayList<TrollResultSerialized> getSauvegarde(String action) {

		ArrayList<TrollResultSerialized> listResult = new ArrayList<TrollResultSerialized>();
		ArrayList<String> listLignes = new ArrayList<String>();

		if (action.compareTo("FILE") == 0) {
			File dossierTroll = new File("sauvegarde");

			for (int i = 0; i < dossierTroll.list().length; i++) {
				listLignes.add(dossierTroll.list()[i]);
			}

			Iterator<String> iter = listLignes.iterator();
			String nomCourant = "";

			while (iter.hasNext()) {
				nomCourant = iter.next();

				// Si on a fichier de type .txt
				if (nomCourant.endsWith(".txt")) {
					TrollResultSerialized resultat = new TrollResultSerialized();
					resultat.setName(nomCourant);

					try {
						if (new File("sauvegarde/" + nomCourant).isFile()) {

							ArrayList<String> inter = FileFactory.getLines(this
									.getServletContext().getRealPath(
											"sauvegarde/" + nomCourant));

							String text = "";

							for (int i = 0; i < inter.size(); i++) {
								text = text + inter.get(i);
							}

							resultat.setText(text);

						}
					} catch (FileNotFoundException e) {
						e.printStackTrace();
					}

					listResult.add(resultat);
				}

			}

		}

		return listResult;
	}

	/**
	 * Pour supprimer un troll
	 * 
	 * @param s
	 *            : le nom du troll
	 * @return
	 */
	public ArrayList<TrollResultSerialized> suppressionTroll(String s) {
		File doc = new File("sauvegarde/" + s);

		if (doc.isFile()) {
			doc.delete();
		}

		return null;
	}

	// Méthode pour récupérer les urls des images
	public ArrayList<ImgResultSerialized> getImages() {

		ArrayList<ImgResultSerialized> listResult = new ArrayList<ImgResultSerialized>();

		File dossierTroll = new File("image");

		for (int i = 0; i < dossierTroll.list().length; i++) {
			listResult.add(new ImgResultSerialized(dossierTroll.list()[i]));
		}

		return listResult;
	}

	/**
	 * Permet de créer une sauvegarde de troll
	 */
	public ArrayList<TrollResultSerialized> creerTroll(String name, String t) {
		File doc = new File("sauvegarde/" + name + ".txt");

		// On supprime le fichier s'il existait
		if (doc.isFile()) {
			doc.delete();
		}

		// On crée le fichier en y insérant le texte donnée
		try {
			doc.createNewFile();
			FileWriter ecrivain = new FileWriter(doc);
			ecrivain.write(t);
			ecrivain.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return null;
	}

	/*
	 * //Ecris dans les fichiers la description de l'image public
	 * ArrayList<Result> myMethod2(String s, String s2) {
	 * 
	 * File doc = new File(s);
	 * 
	 * if(!doc.isFile()) { try { doc.createNewFile();
	 * 
	 * } catch (IOException e) {e.printStackTrace();} } try { FileWriter
	 * ecrivain = new FileWriter(doc); ecrivain.write(s2); ecrivain.close(); }
	 * catch (IOException e) {e.printStackTrace();}
	 * 
	 * return null; }
	 * 
	 * //R�cup�ration du texte d'une image public ArrayList<Result>
	 * myMethod3(String s3) { ArrayList<Result> listResult = new
	 * ArrayList<Result>(); ArrayList<String> listLignes = new
	 * ArrayList<String>();
	 * 
	 * File dossierImages = new File("images");
	 * 
	 * for(int i=0;i<dossierImages.list().length;i++) {
	 * listLignes.add(dossierImages.list()[i]); }
	 * 
	 * Iterator<String> iter = listLignes.iterator(); String nomCourant = "";
	 * 
	 * while (iter.hasNext()) { Result resultat = new Result(); nomCourant =
	 * iter.next(); resultat.setUrl(nomCourant);
	 * 
	 * try { if(new File("description/"+nomCourant+".txt").isFile()) {
	 * ArrayList<String> inter =
	 * FileFactory.getLines(this.getServletContext().getRealPath
	 * ("description/"+nomCourant+".txt"));
	 * 
	 * if(inter.size()>0) { resultat.setText(inter.get(0)); }
	 * 
	 * } } catch (FileNotFoundException e) {e.printStackTrace();}
	 * 
	 * if(resultat.getUrl().compareTo(s3)==0) { listResult.add(resultat); }
	 * 
	 * }
	 * 
	 * 
	 * 
	 * return listResult; }
	 */
}